package com.aaa.common.util;

import com.aaa.common.constant.ConstantUtil;

import javax.servlet.http.HttpServletRequest;

public class TokenUtil {

    /**
     * 从请求头中获取token
     *
     * @param
     * @return token字符串，如果不存在则返回null
     */
    public static String getToken(HttpServletRequest request) {
        if (request == null) {
            return null;
        }
        return request.getHeader(ConstantUtil.UserInfoRef.TOKEN_PARAM_NAME);
    }

    /**
     * 从请求中获取用户ID
     *
     * @param
     * @return 用户ID字符串，如果获取失败则返回null
     */
    public static String getUserId(HttpServletRequest request) {
        // 先获取token
        String token = getToken(request);
        if (token == null || token.isEmpty()) {
            return null;
        }

        // 从token中解析userId
        try {
            String userId = JwtUtils.getPayloadByToken(token)
                    .get(ConstantUtil.UserInfoRef.TOKEN_PARAM_USER_ID)
                    .asString()
                    .replace("\"", "");
            return userId;
        } catch (Exception e) {
            // 可以根据实际情况处理异常，如日志记录
            e.printStackTrace();
            return null;
        }
    }
    /**
     * 从请求中获取用户名
     *
     * @param
     * @return 用户名字符串，如果获取失败则返回null
     */
    public static String getUserName(HttpServletRequest request) {
        // 先获取token
        String token = getToken(request);
        if (token == null || token.isEmpty()) {
            return null;
        }
        // 从token中解析userName
        try {
            String userName = JwtUtils.getPayloadByToken(token)
                    .get(ConstantUtil.UserInfoRef.TOKEN_PARAM_USER_NAME)
                    .asString()
                    .replace("\"", "");
            return userName;
        } catch (Exception e) {
            // 可以根据实际情况处理异常，如日志记录
            e.printStackTrace();
            return null;
        }
    }
}
